package com.sky.orangehireserver.modules.admin.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.sky.orangehireserver.modules.admin.dto.OrganizationCreateDTO;
import com.sky.orangehireserver.modules.admin.dto.OrganizationQueryDTO;
import com.sky.orangehireserver.modules.admin.dto.OrganizationUpdateDTO;
import com.sky.orangehireserver.modules.admin.vo.OrganizationVO;

import java.util.List;

/**
 * 超级管理员企业管理服务接口
 * 
 * @author sky
 */
public interface AdminEnterpriseService {

    /**
     * 创建企业
     * 
     * @param createDTO 企业创建请求DTO
     * @return 企业信息VO
     */
    OrganizationVO createOrganization(OrganizationCreateDTO createDTO);

    /**
     * 更新企业信息
     * 
     * @param updateDTO 企业更新请求DTO
     * @return 企业信息VO
     */
    OrganizationVO updateOrganization(OrganizationUpdateDTO updateDTO);

    /**
     * 根据ID删除企业
     * 
     * @param id 企业ID
     */
    void deleteOrganization(Long id);

    /**
     * 根据ID获取企业详情
     * 
     * @param id 企业ID
     * @return 企业信息VO
     */
    OrganizationVO getOrganizationById(Long id);

    /**
     * 分页查询企业列表
     * 
     * @param queryDTO 查询条件DTO
     * @return 分页企业信息
     */
    IPage<OrganizationVO> getOrganizationPage(OrganizationQueryDTO queryDTO);

    /**
     * 获取所有企业列表（不分页）
     * 
     * @return 企业信息列表
     */
    List<OrganizationVO> getAllOrganizations();

    /**
     * 启用企业
     * 
     * @param id 企业ID
     */
    void enableOrganization(Long id);

    /**
     * 禁用企业
     * 
     * @param id 企业ID
     */
    void disableOrganization(Long id);

    /**
     * 批量删除企业
     * 
     * @param ids 企业ID列表
     */
    void batchDeleteOrganizations(List<Long> ids);
}
